// PROGRAMA : IDCSIGO(PROGRAMA BATCH)  14/03/2002
// BIBLIOTECA : SISP
// OBJETIVO : GERAR ARQUIVO PARA O SIGO
// : USER = ftpuser
// : PASSWORD = ftpuser
// : IP = 172.16.4.3
// : INCLUIR CAMPOS: DINIDE-DESPRO E DINIDE-NUMRES NO
// ARQUIVO GERADO PARA ABN EM 04/12/2002
// JCL : IDCTRANS (DISPARADO PELO SUPORTE MIRANDA)
// JCL(IDCTRANS)  RODA DE 5 EM 5 MINUTOS
// :CARGA INICIAL 25/03/2002
// : OBS: RODAR PELO MENOS UMA VEZ POR SEMANA O JOB JCL
// COM O PROGRAMA IDCPD001 PARA DELETAR REGISTROS
// DO SIC-RG
package br.com.vti.sisp_sicrim.antigo.controller.programa;

import java.io.FileWriter;
import java.io.IOException;

import org.apache.commons.lang3.StringUtils;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.model.DidCadastro;
import br.com.vti.sisp_sicrim.antigo.model.SicRg;
import br.com.vti.sisp_sicrim.antigo.model.SicTabelas;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.Sisgsisp;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Idcsigo OBJETIVO : GERAR ARQUIVO PARA O SIGO *
 * 
 * @author Incode - Data: mai/2014
 * 
 */
@Resource
@Path("/antigo/idcsigo")
public class Idcsigo {
	// Views utilizadas
	SicTabelas vwTabele = new SicTabelas();
	SicTabelas vwDvetab = new SicTabelas();
	DidCadastro vwDidcad = new DidCadastro();
	SicRg vwsicrg = new SicRg();
	// Telas/relatorios utilizados
	// Includes utilizados
	// Areas globais / session
	Sisgsisp sisgsisp;
	// Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();
	FileWriter arquivo1;
	
	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	Idcsigo idcsigoAnterior;
	String faseproc = "0";

	private String iUfexpe = "";
	// TAMANHO DO REGISTRO
	private long iRegger = 0;
	// UF-RG
	private String iNomide = "";
	// NUMERO DO RG
	private int iCodcep = 0;
	// NOME DO IDENTIFICADO
	private int iDatnas = 0;
	// CEP-NASCIMENTO
	private long iNumcpf = 0;
	private String iNumacpf = "";
	private int iCodsex = 0;
	private String iNompai = "";
	// CODIGO DO SEXO
	private String iNommae = "";
	// NOME DO PAI
	private String iUfnasc = "";
	// NOME DA MAE
	// UF NASCIMENTO
	private String iCidade = "";
	// 3 I-CEP-R (A08)
	private String iEndereco = "";
	private String iEndere = "";
	private String iComple = "";
	// ENDERECO
	private String iBairro = "";
	// COMPLEMENTO
	private String iCep = "";
	// BAIRRO
	private String iUfmure = "";
	// CEP RESIDENCIAL
	private int iComuen = 0;
	// UF DO MUNICIPIO REFERENTE AO ENDERECO
	private int iDatatu = 0;
	// CODIGO DO MUNICIPIO REFERENTE AO ENDERECO
	private long iPispas = 0;
	// DATA-CADSTRO
	private String iObs = "";
	// PIS/PASEP
	private int iDatdoc = 0;
	// OBSERVA��O
	private String iDespro = "";
	// DATA DE EMISSAO DO RG
	private String iNacion = "";
	// DESCRICAO DA PROFISSAO
	private String iCorcab = "";
	// CODIGO DA NACIONALIDADE
	private String iCorolh = "";
	// COR DOS CABELOS
	private String iAltura = "";
	// COR DOS OLHOS
	private String iCertidao = "";
	private String iNumcer = "";
	// NUMERO DA CERTIDAO
	private String iNomcar = "";
	// NUMERO DA CERTIDAO
	private String iZonaof = "";
	// NOME DO CARTORIO
	private String iCodcut = "";
	// ZONA/OFICIO
	private long iControleCi = 0;
	// CUTIS
	// ESPELHO
	private String comun = "";
	// CONTROLA QUANTIDADE
	private String reg = "";

	public Idcsigo(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar() {
		try {
			main();
		} catch (Exception e) {
			ExceptionProgram excp = new ExceptionProgram();
			excp.trataErro(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main() throws IOException {
		arquivo1 = new FileWriter(UtilBean.pathFiles()+"arquivo1");
		while (vwDidcad.leituraDataAtualizacaoMaior(20110000)) {
			if (vwDidcad.getDataExp() == UtilBean.obtemDataCorrente() || vwDidcad.getDataExp() > UtilBean.obtemDataCorrente() || vwDidcad.getDataAtualizacao() == UtilBean.obtemDataCorrente() || vwDidcad.getDataAtualizacao() > UtilBean.obtemDataCorrente() || vwDidcad.getDataDocumento() == UtilBean.obtemDataCorrente() || vwDidcad.getDataDocumento() > UtilBean.obtemDataCorrente())
			// DINIDE-DATDOC > 20071231
			{
				reg = "";
				mover();
				moverTab();
				reg = reg + UtilBean.moveSubstring(reg, 0, 2, "A", iUfexpe);
				reg = reg + UtilBean.moveSubstring(reg, 2, 13, "N", iRegger);
				reg = reg + UtilBean.moveSubstring(reg, 15, 60, "A", iNomide);
				reg = reg + UtilBean.moveSubstring(reg, 75, 8, "N", iCodcep);
				reg = reg + UtilBean.moveSubstring(reg, 83, 8, "N", iDatnas);
				reg = reg + UtilBean.moveSubstring(reg, 91, 11, "N", iNumcpf);
				reg = reg + UtilBean.moveSubstring(reg, 91, 11, "A", "");
				reg = reg + UtilBean.moveSubstring(reg, 91, 11, "A", iNumacpf);
				reg = reg + UtilBean.moveSubstring(reg, 102, 1, "N", iCodsex);
				reg = reg + UtilBean.moveSubstring(reg, 103, 60, "A", iNompai);
				reg = reg + UtilBean.moveSubstring(reg, 163, 60, "A", iNommae);
				reg = reg + UtilBean.moveSubstring(reg, 223, 2, "A", iUfnasc);
				reg = reg + UtilBean.moveSubstring(reg, 225, 30, "A", iCidade);
				reg = reg + UtilBean.moveSubstring(reg, 225, 30, "A", "");
				reg = reg + UtilBean.moveSubstring(reg, 225, 30, "A", iCidade);
				reg = reg + UtilBean.moveSubstring(reg, 255, 60, "A", iEndereco);
				reg = reg + UtilBean.moveSubstring(reg, 255, 60, "A", "");
				reg = reg + UtilBean.moveSubstring(reg, 255, 30, "A", iEndere);
				reg = reg + UtilBean.moveSubstring(reg, 285, 10, "A", iComple);
				reg = reg + UtilBean.moveSubstring(reg, 295, 20, "A", iBairro);
				reg = reg + UtilBean.moveSubstring(reg, 315, 8, "A", iCep);
				reg = reg + UtilBean.moveSubstring(reg, 323, 2, "A", iUfmure);
				reg = reg + UtilBean.moveSubstring(reg, 325, 30, "A", iComuen);
				reg = reg + UtilBean.moveSubstring(reg, 355, 8, "N", iDatatu);
				reg = reg + UtilBean.moveSubstring(reg, 363, 12, "N", iPispas);
				reg = reg + UtilBean.moveSubstring(reg, 375, 30, "A", iObs);
				reg = reg + UtilBean.moveSubstring(reg, 405, 8, "N", iDatdoc);
				reg = reg + UtilBean.moveSubstring(reg, 413, 60, "A", iDespro);
				reg = reg + UtilBean.moveSubstring(reg, 473, 40, "A", iNacion);
				reg = reg + UtilBean.moveSubstring(reg, 513, 15, "A", iCorcab);
				reg = reg + UtilBean.moveSubstring(reg, 528, 15, "A", iCorolh);
				reg = reg + UtilBean.moveSubstring(reg, 543, 15, "A", iAltura);
				reg = reg + UtilBean.moveSubstring(reg, 558, 30, "A", iCertidao);
				reg = reg + UtilBean.moveSubstring(reg, 558, 30, "A", "");
				reg = reg + UtilBean.moveSubstring(reg, 558, 9, "A", iNumcer);
				reg = reg + UtilBean.moveSubstring(reg, 567, 15, "A", iNomcar);
				reg = reg + UtilBean.moveSubstring(reg, 582, 6, "A", iZonaof);
				reg = reg + UtilBean.moveSubstring(reg, 588, 7, "A", iCodcut);
				reg = reg + UtilBean.moveSubstring(reg, 595, 10, "N", iControleCi);
				arquivo1.write(reg); // / writeworkfile__
			}
		}

		// ADD 1 TO WC
		// IF WC = 100
		// STOP
		// END-IF
		if (vwDidcad.registrosProcessados() == 0) {
			UtilBean.mensagemTexto("#ERRO: REGISTRO NAO ENCONTRADO NO DID-CADASTRO");
		}
		arquivo1.close();
	}

	private void mover() {

		iUfexpe = vwDidcad.getUfMunicipioExp();
		iRegger = vwDidcad.getNumeroRg();
		// UF EMISSAO RG

		iDatnas = vwDidcad.getDataNasc();
		// N. REGISTRO GERAL

		iNumcpf = vwDidcad.getNumeroCpf();
		iNomide = vwDidcad.getNomeIdent();
		iNommae = vwDidcad.getNomeMae();
		iNacion = String.valueOf(vwDidcad.getNacionalidadeIdent());
		iUfnasc = vwDidcad.getUfMunicipioNasc();
		// MOVE VW-DIDCAD.DINIDE-COMUNA TO I-COMUNA

		iCodsex = vwDidcad.getCodigoSexo();
		iPispas = vwDidcad.getNumeroPisPasep();
		iCodcep = vwDidcad.getCodigoCep();
		iComuen = vwDidcad.getCodigoMunicipio();
		iUfmure = vwDidcad.getUfMunicipio();
		// MOVE VW-DIDCAD.DINIDE-CODPRO TO I-CODPRO

		iCodcut = String.valueOf(vwDidcad.getCodigoCutis());
		iAltura = String.valueOf(vwDidcad.getAlturaIdent());
		iCorolh = String.valueOf(vwDidcad.getCodigoCorOlhos());
		iCorcab = String.valueOf(vwDidcad.getCodigoCorCabelo());
		// MOVE VW-DIDCAD.DINIDE-TIPCAB TO I-TIPCAB

		iDatdoc = vwDidcad.getDataDocumento();
		iZonaof = vwDidcad.getZonaOficio();
		// MOVE VW-DIDCAD.DIAIDE-NUMLIV TO I-NUMLIV

		iNumcer = vwDidcad.getNumeroCertidao();
		// E VW-DIDCAD.DIAIDE-NUMFOL TO I-NUMFOL

		iNomcar = vwDidcad.getNomeCartorio();
		iComple = vwDidcad.getComplementoEndereco();
		iBairro = vwDidcad.getNomeBairro();
		iEndere = vwDidcad.getEnderecoIdent();
		iNompai = vwDidcad.getNomePai();
		// MOVE VW-DIDCAD.DINIDE-NUMPOR TO I-NUMPOR
		// MOVE VW-DIDCAD.DINIDE-ANOPOR TO I-ANOPOR
		// MOVE VW-DIDCAD.DINIDE-CODPOR TO I-CODPOR

		iDespro = vwDidcad.getDespro();
		// MOVE VW-DIDCAD.DINIDE-DATNAT TO I-DATNAT

		iDatatu = vwDidcad.getDataAtualizacao();
		iControleCi = vwDidcad.getNumeroProtocolo();
		switch (vwDidcad.getTipoDocumento()) {
		case 1: {
			iNumcer = vwDidcad.getNumeroCertidao();
			// I-NUMFOL := DIAIDE-NUMFOL
			// I-NUMLIV := DIAIDE-NUMLIV
			iNumcer = vwDidcad.getNumeroCertidao();
			break;
		}
		// I-ANOPOR:= DINIDE-ANOPOR
		// VALUE 4
		// I-NUMPOR:= DINIDE-NUMPOR
		case 5: {
			iNumcer = vwDidcad.getNumeroCertidao();
			break;
		}
		// I-NUMFOL:= DIAIDE-NUMFOL
		case 6: {
			iNumcer = vwDidcad.getNumeroCertidao();
			break;
		}
		// I-NUMFOL:= DIAIDE-NUMFOL
		default: {
			break;
		}
		}
		iDatnas = vwDidcad.getDataNasc();
		if (vwDidcad.getNumeroPisPasep() > 0) {
			iPispas = vwDidcad.getNumeroPisPasep();
		} else {
			iPispas = 0;
		}
		if (vwDidcad.getNumeroCpf() > 0) {
			iNumcpf = vwDidcad.getNumeroCpf();
		} else {
			iNumacpf = StringUtils.repeat("*", 11);
		}
		if (iNumacpf.equals("0")) {
			iNumacpf = StringUtils.repeat("*", 11);
		}
	}

	private void moverTab() {

		iRegger = vwDidcad.getNumeroRg();
		iNomide = vwDidcad.getNomeIdent();
		iCodcep = vwDidcad.getCodigoCep();
		iDatnas = vwDidcad.getDataNasc();
		iNumcpf = vwDidcad.getNumeroCpf();
		iCodsex = vwDidcad.getCodigoSexo();
		iNompai = vwDidcad.getNomePai();
		iNommae = vwDidcad.getNomeMae();
		iUfnasc = vwDidcad.getUfMunicipioNasc();
		if (vwDidcad.getNacionalidadeIdent() == 1) {
			vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 0, 3, "N", 1);
			vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 3, 12, "N", vwDidcad.getNomeMunicipioIdent());
			// TABELA DE MUNICIPIOS
			// NOME DO MUNICIPIO
			vwDvetab.resp = funcoes.sisst001(1, vwDidcad.getNomeMunicipioIdent(), vwDvetab.resp);
			iCidade = vwTabele.resp;
			vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 0, 3, "N", 1);
			vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 3, 12, "N", vwDidcad.getCodigoMunicipio());
			// TABELA DE MUNICIPIOS
			// NOME DA CIDADE RESIDENCIAL
			// MOVE I-CEP-R TO I-CEP
			// MOVE ' ' TO I-BRANCO I-CEP-R
			vwDvetab.resp = funcoes.sisst001(1, vwDidcad.getCodigoMunicipio(), vwDvetab.resp);
			iComuen = Integer.parseInt(vwTabele.resp);
			if (UtilBean.subStr(vwDvetab.resp, 0, 1).equals("#")) {
				vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 0, 3, "N", 209);
				vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 3, 12, "N", vwDidcad.getPaisOrigem());
				// TABELA DE PAISES
				// PAIS DE ORIGEM
				vwDvetab.resp = funcoes.sisst001(209, vwDidcad.getPaisOrigem(), vwDvetab.resp);
				iCidade = vwTabele.resp;
			}

			comun = iCidade;
			comun = UtilBean.concatena(iCidade, "-", vwDidcad.getUfMunicipioNasc());
		} else {
			vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 0, 3, "N", 209);
			vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 3, 12, "N", vwDidcad.getPaisOrigem());
			vwDvetab.resp = funcoes.sisst001(209, vwDidcad.getPaisOrigem(), vwDvetab.resp);
			iCidade = vwTabele.resp;
		}
		// MOVE I-CIDADE TO COMUN

		iEndere = vwDidcad.getEnderecoIdent();
		iBairro = vwDidcad.getNomeBairro();
		iCodcep = vwDidcad.getCodigoCep();
		iUfmure = vwDidcad.getUfMunicipio();
		// IF DIAIDE-UFMURE = 'AC'
		// MOVE 'ACRE' TO I-COMUEN
		// END-IF
		// IF DIAIDE-UFMURE = 'AL'
		// MOVE 'ALAGOAS' TO I-COMUEN
		// END-IF
		// IF DIAIDE-UFMURE = 'AM'
		// MOVE 'AMAZONAS' TO I-COMUEN
		// END-IF
		// IF DIAIDE-UFMURE = 'AP'
		// MOVE 'AMAPA' TO I-COMUEN
		// END-IF
		// IF DIAIDE-UFMURE = 'BA'
		// MOVE 'BAHIA' TO I-COMUEN
		// END-IF
		// IF DIAIDE-UFMURE = 'CE'
		// MOVE 'CEARA' TO I-COMUEN
		// END-IF
		// IF DIAIDE-UFMURE = 'DF'
		// MOVE 'DISTRITO FEDERAL' TO I-COMUEN
		// END-IF
		// IF DIAIDE-UFMURE = 'ES'
		// MOVE 'ESPIRITO SANTO' TO I-COMUEN
		// END-IF
		// IF DIAIDE-UFMURE = 'GO'
		// MOVE 'GOIAIS' TO I-COMUEN
		// END-IF
		// IF DIAIDE-UFMURE = 'MA'
		// MOVE 'MARANHAO' TO I-COMUEN
		// END-IF
		// IF DIAIDE-UFMURE = 'MT'
		// MOVE 'MATO GROSSO' TO I-COMUEN
		// END-IF
		// IF DIAIDE-UFMURE = 'MS'
		// MOVE 'MATO GROSSO DO SUL' TO I-COMUEN
		// END-IF
		// IF DIAIDE-UFMURE = 'MG'
		// MOVE 'MINAS GERAIS' TO I-COMUEN
		// END-IF
		// IF DIAIDE-UFMURE = 'PB'
		// MOVE 'PARAIBA' TO I-COMUEN
		// END-IF
		// IF DIAIDE-UFMURE = 'PE'
		// MOVE 'PERNAMBUCO' TO I-COMUEN
		// END-IF
		// IF DIAIDE-UFMURE = 'PI'
		// MOVE 'PIAUI' TO I-COMUEN
		// END-IF
		// IF DIAIDE-UFMURE = 'PR'
		// MOVE 'PARANA' TO I-COMUEN
		// END-IF
		// IF DIAIDE-UFMURE = 'RN'
		// MOVE 'RIO GRANDE DO NORTE' TO I-COMUEN

		iDatdoc = vwDidcad.getDataDocumento();
		// END-IF

		iPispas = vwDidcad.getNumeroPisPasep();
		iObs = vwDidcad.getObservacaoAdocao();
		iDatdoc = vwDidcad.getDataDocumento();
		iDespro = vwDidcad.getDespro();
		iNacion = "BRASILEIRA";
		if (UtilBean.subStr(vwDvetab.resp, 0, 1).equals("#")) {
			vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 0, 3, "N", 209);
			vwDvetab.pesq = UtilBean.moveSubstring(vwDvetab.pesq, 3, 12, "N", vwDidcad.getNacionalidadeIdent());
			// TABELA DE PAISES
			// PAIS DE ORIGEM
			vwDvetab.resp = funcoes.sisst001(209, vwDidcad.getNacionalidadeIdent(), vwDvetab.resp);
			iNacion = vwTabele.resp;
		}
		if (vwDidcad.getCodigoTipoCabelo() == 1) {
			iCorcab = "LISOS";
		}
		if (vwDidcad.getCodigoTipoCabelo() == 2) {
			iCorcab = "ENCARACOLADOS";
		}
		if (vwDidcad.getCodigoTipoCabelo() == 3) {
			iCorcab = "ONDULADOS";
		}
		if (vwDidcad.getCodigoTipoCabelo() == 4) {
			iCorcab = "CARAPINHA";
		}
		if (vwDidcad.getCodigoTipoCabelo() == 5) {
			iCorcab = "CRESPO";
		}
		if (vwDidcad.getCodigoTipoCabelo() == 6) {
			iCorcab = "CAUVO";
		}
		if (vwDidcad.getCodigoTipoCabelo() == 7) {
			iCorcab = "CARECA";
		}
		if (vwDidcad.getCodigoCorOlhos() == 1) {
			iCorolh = "PRETOS";
		}
		if (vwDidcad.getCodigoCorOlhos() == 2) {
			iCorolh = "VERDES";
		}
		if (vwDidcad.getCodigoCorOlhos() == 3) {
			iCorolh = "AZUIS";
		}
		if (vwDidcad.getCodigoCorOlhos() == 4) {
			iCorolh = "CASTANHOS";
		}
		if (vwDidcad.getCodigoCorOlhos() == 5) {
			iCorolh = "ALBINOS";
		}

		iAltura = String.valueOf(vwDidcad.getAlturaIdent());
		iDatnas = vwDidcad.getDataNasc();
		if (vwDidcad.getNumeroPisPasep() > 0) {
			iPispas = vwDidcad.getNumeroPisPasep();
		} else {
			iPispas = 0;
		}
		if (vwDidcad.getTipoDocumento() == 1) {
			iCertidao = "CERT. NASCIMENTO";
		}
		if (vwDidcad.getTipoDocumento() == 2) {
			iCertidao = "CERT. CASAMENTO";
		}
		if (vwDidcad.getTipoDocumento() == 3) {
			iCertidao = "CERT. DE NATURALIDADE";
		}
		if (vwDidcad.getTipoDocumento() == 4) {
			iCertidao = "CERT. DE DIREITOS E DEVERES";
		}
		if (vwDidcad.getTipoDocumento() == 5) {
			iCertidao = "SEPARACAO JUDICIAL";
		}
		if (vwDidcad.getTipoDocumento() == 6) {
			iCertidao = "DIVORCIADO";
		}
		if (vwDidcad.getTipoDocumento() == 7) {
			iCertidao = "DESQUITADO";
		}

		iCodcut = String.valueOf(vwDidcad.getCodigoCutis());
		if (vwDidcad.getCodigoCutis() == 1) {
			iCodcut = "BRANCA";
		}
		if (vwDidcad.getCodigoCutis() == 2) {
			iCodcut = "NEGRA";
		}
		if (vwDidcad.getCodigoCutis() == 3 || vwDidcad.getCodigoCutis() == 4) {
			iCodcut = "PARDA";
		}
		if (vwDidcad.getCodigoCutis() == 5) {
			iCodcut = "AMARELA";
		}
	}
}
